Перейти к основному содержимому

7.07. Шифрование

Разработчику Инженеру

Шифрование

Шифрование (Encryption) - это процесс преобразования данных в защищённый формат, чтобы только авторизованные пользователи могли их прочитать.

Шифрование бывает:

  • симметричное - используется один ключ для шифрования и расшифровки;
  • асимметричное - используются два ключа - публичный и приватный.

Это нужно для защиты данных при передаче.

Шифрование использует безопасные алгоритмы AES-256, ChaCha20-Poly1305.

Хэширование (Hashing) - это одностороннее преобразование данных в уникальную строку фиксированной длины. Не может быть обратным.

К примеру, если мы преобразуем «HELLO» по алгоритмам:

АлгоритмРезультат
MD55d41402abc4b2a76b9719d911017c592
SHA-1a57f5f3a14be99a5ac86b1cb6ea9673b
SHA-2562cf24dba5fb0a30e26e83b2ac5b9e2901b161e5c1fa7425e73043362938b9826

Хэширование использует безопасные алгоритмы SHA-256, SHA-3, Blake2. Захэшированные данные нельзя расшифровать, только сверить хэш. HMAC (Hash-based Message Authentication Code) - это механизм проверки целостности и подлинности сообщения, использующий общий секретный ключ и хэш-функцию. Применяется в API-ключах, JWT и аутентификации сообщений.

HMAC применяет безопасные алгоритмы HMAC-SHA256, HMAC-SHA512.

Шифрование тесно связано с подписями и подлинностью.

Электронная цифровая подпись (ЭЦП) — это криптографический механизм, позволяющий убедиться в подлинности отправителя, неизменности данных и доказать факт подписания (неотказуемость).

Как это работает?

  1. Создаётся хэш от документа (SHA-256);
  2. Хэш подписывается приватным ключом отправителя;
  3. Получатель проверяет подпись с помощью публичного ключа.

Так и происходит подпись документов, удостоверение программ, работа с SSL/TLS сертификатами, а также блокчейн-транзакции.

Подписи используют безопасные алгоритмы RSA-2048+, ECDSA, Ed25519.

Base64 - это кодирование. Кодирование и шифрование - разные вещи, к примеру, Base64 просто представляет бинарные данные в виде текста, но не защищает их. Base64 легко декодируется, не обеспечивает конфиденциальности, и многие часто ошибочно принимают его за шифрование.

Если нужно скрыть данные от других - применяется шифрование. Если нужно проверить подлинность - HMAC. Если нужно подписать документ - цифровую подпись. А если нужно отправить бинарные данные в виде строки через API - Base64.